package poolHilos;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class PoolHilos {

    public static void main(String[] args) {
        if (false) {
            ExecutorService lanzadorHilos = Executors.newSingleThreadExecutor();
            for (int i = 0; i < 10; i++) {
                Prueba p = new Prueba("Hilo " + i);
                lanzadorHilos.submit(p);
            }
            lanzadorHilos.shutdown();
        }
        if (false) {
            ExecutorService lanzadorHilos = Executors.newFixedThreadPool(2);
            for (int i = 0; i < 10; i++) {
                Prueba p = new Prueba("Hilo " + i);
                lanzadorHilos.submit(p);
            }
            lanzadorHilos.shutdown();
        }
        if (true) {
            ExecutorService lanzadorHilos = Executors.newCachedThreadPool();
            for (int i = 0; i < 10; i++) {
                Prueba p = new Prueba("Hilo " + i);
                lanzadorHilos.submit(p);
            }
            lanzadorHilos.shutdown();
        }
    }

    static class Prueba implements Runnable {

        private String nombre;

        public Prueba(String nombre) {
            this.nombre = nombre;
        }

        public void run() {
            for (int i = 0; i <= 1000; i++) {
                if (i % 100 == 0) {
                    System.out.println(nombre + " " + i);
                }
            }
            System.out.println(nombre + " FIN ");
        }
    }
}
